package com.ews.onlineexchange.service;

import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.List;

import javax.ejb.Stateless;
import javax.inject.Inject;

import com.ews.onlineexchange.model.Bulletin;
import com.ews.onlineexchange.model.QualificationCert;
import com.ews.onlineexchange.model.ServiceSupplier;
import com.ews.onlineexchange.model.Trade;

/**
 * @author Administrator
 *消息推送
 */
@Stateless
public class MessgaePushService {
	static DateFormat df;
	static {
		df = new SimpleDateFormat("yyyy-MM-dd HH:mm");
	}
	
	
//	/**
//	 * 中介被黑名单
//	 * 您在东营市网上中介超市的帐号因被东营区发改局列为信用黑名单成员，您的注册帐号将被暂时停用。具体信息请联系东营市东营区发改局。
//	 */
//	public void addSupplierBlackList(ServiceSupplier supplier) {
//		StringBuilder sb = new StringBuilder();
//		sb	.append((supplier.getCnname()))
//			.append("，您好:")	
//			.append("您在东营市网上中介超市的帐号因被东营区发改局列为信用黑名单成员，您的注册帐号将被暂时停用。具体信息请联系东营市东营区发改局。");
//		String result = SmsSender.sendSms( getDestNumber(supplier), sb.toString());
////		if("".equals(result)) {
////			return ;
////		}
//		ShortMessage message = new ShortMessage(getDestNumber(supplier), sb.toString());
//		saveFeedbackMsg(result, message);
//	}
	
	/**
	 * 中介基本信息临近过期提醒
	 * 您的注册信息已经临近过期，为避免您的正常业务受到影响，请尽快完善您的注册信息并前往【黄河三角洲第三方服务基地建设领导小组办公室】参加复审。
	 */
	public String addSupplierExpire(ServiceSupplier supplier) {
		StringBuilder sb = new StringBuilder();
		sb	.append(supplier.getId())
			.append("||")
			.append("您的注册信息已临近过期，为避免您的正常业务受到影响。请尽快完善注册信息并前往【")
			.append("黄河三角洲第三方服务基地建设领导小组办公室")
			.append("】参加复审。");
		return sb.toString();
	}
	
	public String addCertRejectSupplier(QualificationCert cert) {
		StringBuilder sb = new StringBuilder();
		sb	.append(cert.getServiceSupplier().getCnname())
			.append("||")
			.append("您的资质证书【")
			.append(cert.getQualificationClass().getName())
			.append("】被驳回，请及时修改，并重新提交审核!");
		return sb.toString();
	}
	
	public String addCertAuditSuccessSupplier(QualificationCert cert) {
		StringBuilder sb = new StringBuilder();
		sb	.append(cert.getServiceSupplier().getId())
			.append("||")
			.append("您的注册证书【")
			.append(cert.getQualificationClass().getName())
			.append("】已经审核通过！");
		return sb.toString();
	}
	
	/**
	 * 中介资质临近过期提醒
	 * 您的注册证书【证书大类名称】临近过期，为避免您的正常业务受到影响。请尽快完善证书信息并前往【这里是行业部门？】参加复审。
	 */
	public String addCertExpire(QualificationCert cert) {
		StringBuilder sb = new StringBuilder();
		sb	.append(cert.getServiceSupplier().getId())
			.append("||")
			.append("您的注册证书【")
			.append(cert.getQualificationClass().getName())
			.append("临近过期，为避免您的正常业务受到影响。请尽快完善证书信息并前往【")
			.append(cert.getQualificationClass().getAuditDepartment().getCnname())
			.append("】参加复审。");
		return sb.toString();
	}
	
	/**
	 * 用户注册失败时，向申请发送提醒信息
	 * 很抱歉，您在东营市网上中介超市的注册被驳回，请登录官方网站查看原因。
	 */
	public String addRegisterFailedMessage(ServiceSupplier supplier) {
		
		StringBuilder sb = new StringBuilder();
		sb	.append(supplier.getId())
			.append("||")
			.append("很抱歉，您在东营市网上中介超市的注册被驳回，请登录官方网站查看原因。");
		
			return sb.toString();
	
	}
	
	/**
	 * 公告被驳回
	 * 您在东营市网上中介超市发布的【项目名称】公告，已被管理员驳回，请您尽快检查并完善公告信息。
	 */
	public String addBulletinReject(Bulletin bulletin) {
		StringBuilder sb = new StringBuilder();
		sb	.append(bulletin.getBuyer().getId())
			.append("||")
			.append("您发布的【")
			.append(bulletin.getProjectName())
			.append("】公告,已被管理员驳回，请您尽快检查并完善公告信息。");
		return sb.toString();
	}
	
	/**
	 * 向中介公司发送中标通知
	 * 您在东营市网上中介超市报名参与的【项目名称】】，已经选取完成，恭喜您中选。
	 */
	public String addWinMessageToSupplier(Bulletin bulletin) {
		StringBuilder sb = new StringBuilder();
		sb	.append(bulletin.getSuccessTrade().getSupplier().getId())
			.append("||")
			.append("您报名参与的【")
			.append(bulletin.getProjectName())
			.append("】，已经选取完成，恭喜您中选。");
		return sb.toString();
	}
	
	/**
	 * 择优选取 向中介公司发送候选通知
	 * 
	 */
	public String addCandidateMessageToSupplier(Bulletin bulletin) {
		StringBuilder sb = new StringBuilder();
		List<Trade> bestTrades = bulletin.getBestTrades();
		for (Trade trade : bestTrades) {		
			sb	.append(trade.getSupplier().getId())
					.append(",");
			if(sb.length() > 0) sb.substring(0, sb.length() - 1);
		}
		
		if(sb.length() > 0)sb.append("||");
			sb.append("您参与的【")
			  .append(bulletin.getProjectName())
			  .append("】，项目编号【")
			  .append(bulletin.getSerialNumber())
			  .append("】已经选取完成，恭喜您成为候选中介之一，请电话咨询相关事宜【0546-8966546】。");
		return sb.toString();
	}
	
	
	/**
	 * 择优选取 向采购方公司发送选取完成通知
	 * 
	 */
	public String addCandidateMessageToBuyer(Bulletin bulletin) {
		
		StringBuilder sb = new StringBuilder();
		sb	.append(bulletin.getBuyer().getId())
			.append("||")
			.append("您发布的【")
			.append(bulletin.getProjectName())
			.append("】已经选取完成，候选中介如下：")
			.append(bulletin.getBestTradeSupplierNames())
			.append(".");
		return sb.toString();
	}
	
	/**
	 * 向采购方发送结果
	 * 您在东营市网上中介超市发布的【项目名称】公告，已经选取完成，中选人【中介公司名称】。
	 */
	public String addOverMessageToBuyer(Bulletin bulletin) {
		StringBuilder sb = new StringBuilder();
		sb	.append(bulletin.getBuyer().getId())
			.append("||")
			.append("您发布的【")
			.append(bulletin.getProjectName())
			.append("】公告，已经选取完成，中选人【")
			.append(bulletin.getSuccessTrade().getSupplier().getCnname())
			.append("】。");
		return sb.toString();
	}
	
	/**
	 * 发送流拍通知
	 * 您在东营市网上中介超市发布的【项目名称】公告，因【无人报名】现已流拍。
	 */
	public String addPassMessageToBuyer(Bulletin bulletin) {
		StringBuilder sb = new StringBuilder();
		sb	.append(bulletin.getBuyer().getId())
			.append("||")
			.append("您发布的【")
			.append(bulletin.getProjectName())
			.append("】公告，因【无人报名】现已流拍。");
		return sb.toString();
	}
	
	/**
	 * 发送流拍通知
	 * 您在东营市网上中介超市发布的【项目名称】公告，因【审核时间已超过报名截止时间】现已流拍。
	 */
	public String addLatePassMessageToBuyer(Bulletin bulletin) {
		StringBuilder sb = new StringBuilder();
		sb	.append(bulletin.getBuyer().getId())
			.append("||")
			.append("您发布的【")
			.append(bulletin.getProjectName())
			.append("】公告，因【无人报名】现已流拍。");
		return sb.toString();
		
	}
	
	@Inject
	BulletinService bulletinService;
	/**
	 * 向中介发送提醒
	 * 东营市网上中介超市提醒您参与【项目名称】网上公开选取活动。截至报名时间：【yyyy-MM-dd HH:mm:ss】。
	 */
	public String addInviteMessageToSupplier(Bulletin bulletin) {
		List<Trade> inviteTrades = bulletinService.getInviteTradesByBulletinId(bulletin.getId());
		StringBuilder content = new StringBuilder();
		for (Trade trade : inviteTrades) {		
			content	.append(trade.getSupplier().getId())
					.append(",");
			if(content.length() > 0) content.substring(0, content.length() - 1);
		}
		
		if(content.length() > 0)content.append("||");
		content .append("【")
				.append(bulletin.getProjectName())
				.append("】网上公开选取活动将于")
				.append(df.format(bulletin.getEndingApplyTime()))
				.append("截止报名。");
		return content.toString();
	}
	
	/**
	 * 
	 * 
	 */
	public String addSuccessAppliedMessageToSupplier(Trade trade) {		
			StringBuilder content = new StringBuilder();
			content	.append(trade.getSupplier().getId())
					.append("||")
					.append("您已成功报名参与【")
					.append(trade.getBulletin().getProjectName())
					.append("】网上公开选取活动。选取时间：")
					.append(df.format(trade.getBulletin().getChooseTime()))
					.append("。");
		return content.toString();
	}
	/**
	 * 
	 * 
	 */
	public String addCancelAppliedMessageToSupplier(Trade trade) {		
			StringBuilder content = new StringBuilder();
			content	.append(trade.getSupplier().getId())
					.append("||")
					.append("您已成功取消报名！");
		return content.toString();
	}
	
	public String addCancelAppliedByBuyerMessageToSupplier(Trade trade) {		
		StringBuilder content = new StringBuilder();
		content	.append(trade.getSupplier().getId())
				.append("||")
				.append("您已被取消报名，原因如下:")
				.append(trade.getCancelReason());
	return content.toString();
}
}
